1282. Group the People Given the Group Size They Belong To
마지막 수정일: 2025. 05. 21.
Map을 이용한 문제
첫sol하긴 했지만 시간이 생각보다 오래걸림
개선 전
/**
* @param {number[]} groupSizes
* @return {number[][]}
*/
function groupThePeople(groupSizes) {
let grouping = new Map();
for (let i = 0; i < groupSizes.length; i++) {
const size = groupSizes[i];
if (!grouping.has(size)) {
grouping.set(size, []);
}
grouping.get(size).push(i);
}
let output = [];
for (const [key, value] of grouping) {
if (value.length !== key) {
for (let i = 0; i < value.length; i += key) {
output.push(value.slice(i, i + key));
}
} else {
output.push(value);
}
}
return output;
}
개선 후
굳이 삽입과 계산을 따로 진행하지 않고 한 번에 진행하는 형식으로 변경
var groupThePeople = function (groupSizes) {
const res = []
const groupMap = new Map();
groupSizes.forEach((size, index) => {
if (!groupMap.has(size)) groupMap.set(size, []);
const curIndexes = groupMap.get(size)
curIndexes.push(index);
if (curIndexes.length === size) {
res.push(curIndexes);
groupMap.set(size, [])
}
})
return res
};